/*
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved.
 */
package com.icinfo.cloud.provider.punish.vo;


import com.fasterxml.jackson.annotation.JsonFormat;
import com.icinfo.cloud.common.core.Validator.BaseGroup;
import com.icinfo.cloud.provider.punish.dto.CaseEvidencePhotoDto;
import com.icinfo.cloud.provider.punish.ucase.caseregister.dto.CaseHandlePersonInfoDto;
import lombok.Data;

import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 简易处罚详情视图
 */
@Data
public class SimpleCaseInfoVo implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 案件id
     */
    private String caseId;

    //--------------取证-------------start

    /**
     * 案发时间
     */
    @NotNull(message = "案发时间不能为空")
    private String caseHappenTime;

    /**
     * 案发地址：经纬度
     */
    @NotNull(message = "案件地址不能为空")
    private String addressLatLongitude;

    /**
     * 案发详细地址
     */
    @NotNull(message = "案件地址不能为空")
    private String caseHappenAddressDetail;

    /**
     * 取证照片
     */
    @NotNull(message = "取证照片不能为空")
    @Valid
    private List<CaseEvidencePhotoDto> caseEvidencePhotoList;

    /**
     * 反映内容
     */
    private String caseReactionContent;

    /**
     * 备注
     */
    private String caseRemark;



//-----------------------------当事人信息----------start

    /**
     * 当事人类型 1:个人 2:法人
     */
    private String partyType;
    /**
     * 当事人姓名
     **/
    private String name;
    /**
     * 当事人性别
     **/
    private String sex;
    /**
     * 当事人出生年月
     **/
    private String birth;
    /**
     * 年龄
     */
    private String age;
    /**
     * 当事人联系电话
     **/
    private String mobile;
    /**
     * 当事人证件类型
     **/
    private String certType;
    /**
     * 当事人证件号码
     **/
    private String certNo;
    /**
     * 当事人住址
     **/
    private String address;
    /**
     * 当事人工作单位
     **/
    private String unitName;
    /**
     * 当事人民族
     **/
    private String nationality;

    /**
     * 法定代表人或负责人--当事人法人
     **/
    private String legal;

    /**
     * 工作单位的职务--当事人法人
     **/
    private String job;
    /**
     * 统一社会信用代码--当事人法人
     **/
    private String uniscid;
    /**
     * 工作单位的电话--当事人法人
     **/
    private String phone;
    /**
     * 单位的地址--当事人法人
     **/
    private String unitAddress;
    /**
     * 法人身份证--当事人法人
     **/
    private String legalCertNo;
    /**
     * 法人证件类型--当事人法人
     **/
    private String legalCertType;

    /**
     * 单位单位名称
     **/
    private String entName;
    /**
     * 单位类型
     **/
    private String entType;
    /**
     *经营地址
     */
    private String businessAddress;

    /**
     * 当事人id ----后台逻辑使用
     */
    private String partyId;

    //-----------------------------当事人信息----------end


    //------------------案由------------------start
    /**
     *  领域code---案由
     **/
    @NotNull(message = "案件领域编码不能为空")
    private String territoryCode;
    /**
     * 案由
     */
    @NotNull(message = "案件案由不能为空")
    private String caseReasonName;
    /**
     * 案由id ,外部接口获取
     */
    private String caseReasonId;
    /**
     * 案由编码 ,外部接口获取
     */
    private String caseReasonCode;
    /**
     * 违则
     **/
    private String illegalBasis;

    /**
     * 违则详情
     **/
    private String  illegalDetail;
    /**
     * 罚则
     **/
    private String punishBasis;
    /**
     * 罚则详情
     **/
    private String punishDetail;
    /**
     * 事项编码
     **/
    @NotNull(message = "案件事项版本编码不能为空")
    private String  itemVersionCode;
    /**
     * 事项id
     **/
    @NotNull(message = "案件事项id不能为空")
    private String  claimId;

    /**
     * 案由ids,前端回显使用
     */
    @NotEmpty(message = "caseReasonIds不能为空")
    private String[] caseReasonIds;

    /**
     * 轻微违法不予处罚条件
     */
    private String slightIllegalSituationContent;

    /**
     * 事项分类标记事项分类标记(法定事项-1;赋权事项(通用事项-2；自选事项-3);委托事项)
     */
    private String sxType;

    /**
     * 委托部门编码
     */
    private String clientOrgCode;

    /**
     * 委托部门名称
     */
    private String clientOrgName;

    /**
     * 委托部门编码
     */
    private String clientDeptCode;

    /**
     * 委托部门名称
     */
    private String clientDeptName;

    /**
     * 委托部门-区域编码
     */
    private String areaCode;

    /**
     * 委托部门-条线编码
     */
    private String clientLineCode;

    /**
     * 是否公安委托执法
     */
    private String isPublicSecurity;

    /**
     * 公安委托执法-事项代码
     */
    private String publicSecurityItemCode;

    /**
     * 公安委托执法-记分
     */
    private String licenseScore;

    /**
     * 交通方式
     */
    private String trafficWay;

    /**
     * 驾驶证编号
     */
    private String licenseNumber;

    /**
     * 驾驶证档案编号
     */
    private String licenseFileNumber;

    /**
     * 准驾车型
     */
    private String allowCarType;

    /**
     * 车牌省份
     */
    private String licensePlateProvince;

    /**
     * 车牌号码
     */
    private String licensePlateNumber;

    /**
     * 车辆类型
     */
    private String carType;

    /**
     * 发证机关
     */
    private String licenceDepartment;

    /**
     * 事项catalogId
     */
    private String catalogId;



    //------------------案由------------------end


    //-----------------处罚信息----------------start
    /**
     * 办案人员列表
     */
    @NotNull(message = "办案人员不能为空",groups = BaseGroup.Update.class)
    @Valid
    private List<CaseHandlePersonInfoDto> handlePersonInfoList;

    /**
     * 违法事实
     */
    @NotNull(message = "违法事实不能为空")
    private String illegalFact;

    /**
     * 拟处罚内容(多个以,分割)
     */
    @NotNull(message = "拟处罚内容不能为空")
    private String punishKinds;

    /**
     * 拟处罚金额
     */
    @NotNull(message = "拟处罚金额不能为空")
    private String draftPunishMoney;

    /**
     * 缴款方式 (1:自行缴纳2:当场缴纳)
     */
    @NotNull(message = "缴款方式不能为空")
    private String payWay;

    //-----------------处罚信息----------------end


    //-----------------责令信息----------------start

    /**
     * 整改方式(1:立即整改2:限期整改3:其他)
     */
    private String correctWay;

    /**
     * 整改截止日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private String correctEndDate;

    /**
     * 其他整改方式说明
     */
    private String correctOtherContent;

    //-----------------责令信息----------------end

    /**
     * 是否自动保存 0:否 1:是 --- 暂存接口使用
     */
    private String isAutoSave;


    /**
     * 数据来源(数据字典-ApiVisitDataSourceEnum)
     */
    private String dataSource;

    /**
     * 处罚决定书文号
     */
    private String punishDocumentNumber;

    /**
     * 案件编号
     */
    private String caseNumber;

    /**
     * 数据来源方业务唯一主键id
     */
    private String dataSourceServiceId;

    /**
     * 处罚决定书地址
     */
    private String punishDocumentUrl;

    /**
     * 外部行政行为码
     */
    private String caseExternalActsCode;
    /**
     * 案件状态
     */
    private String caseStatus;

    /**
     * 条线编码
     */
    private String lineCode;
    /**
     * 条线名称
     */
    private String lineName;

    /**
     * 条线类别编码(农业农村使用)
     */
    private String lineTypeCode;
    /**
     * 条线类别名称(农业农村使用)
     */
    private String lineTypeName;

    /**
     * 是否轻微违法 1:是 2:否  -- 轻微违法时必传
     */
    private String isSlightIllegal;
    /**
     * 处罚结论;1:予以处罚,2:不予处罚 -- 轻微违法时必传
     */
    private String investConclusion;
    /**
     * 不予处罚原因 -- 不予处罚时必传
     */
    private String notGivePunishReason;
    /**
     * 是否工商专项(0-否/1-是)
     */
    private String isIndustrialTradeSpecial;


    /**
     * 是否无牌  （1-是 0-否）
     */
    private String hasLicensePlate;

    /**
     * 是否无证 （1-是 0-否）
     */
    private String hasDrivingLicence;


    /**
     * 移交备注，当无牌或无证时，该字段必填
     */
    private String transferRemark;


    //----------自由裁量
    /**
     * 违法情形，ConfigOrgRegulatoryDiscretion.ruleHisId
     */
    private String illegalSituation;

    /**
     * 没收违法财物
     */
    private String confiscateProperty;

    /**
     * 没收违法财物价值
     */
    private BigDecimal confiscatePropertyAmount;

    /**
     * 没收违法所得
     */
    private BigDecimal confiscateGainsAmount;

}
